A content delivery network (CDN) is a network of servers containing copies of a resource located at various points within a larger network. In modern web applications, CDNs can deliver resources with lower latency and lower cost than by serving the resources from an application server. However, the structure of a CDN is often opaque to the operator of the application. A CDN may comprise hundreds of locations (called points of presence (POPs)) at which a resource may be cached. These individual POPs may fail, such as by delivering corrupt copies of a resource, in a manner difficult for the application operator to detect. Such difficulties are only magnified for large resources, such as large web applications. CDNs are reluctant to reveal exact POP locations and monitoring such a large number of caches can be unwieldy. As a result, CDNs lack the resolution to know about a partial failure (e.g., corrupt individual file). Typically, client-side mechanisms are used to recover from delivery failures. When the client detects a delivery failure, the client attempts to directly fetch the resource from another location. With purely client-side approaches, however, the ability to route around failures is limited to the knowledge of the client and does not benefit the broader community of users of the application.
While content delivery failover is described herein by way of example for several embodiments and illustrative drawings, those skilled in the art will recognize that content delivery failover is not limited to the embodiments or drawings described. It should be understood, that the drawings and detailed description thereto are not intended to limit content delivery failover to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope of content delivery failover as defined by the appended claims. The headings used herein are for organizational purposes only and are not meant to be used to limit the scope of the description or the claims. As used throughout this application, the word “may” is used in a permissive sense (i.e., meaning having the potential to), rather than the mandatory sense (i.e., meaning must). Similarly, the words “include,” “including,” and “includes” mean including, but not limited to.